import { fetchLogin, fetchUserInfo } from "@/api/user.js"

// action生成器creater
// 调用函数得到的对象是action

// 同步action 返回一个对象
export function switchSize(size) {
    return { type: 'APP_SIZE', payload: size }
}

export function switchLang(lang) {
    return { type: 'APP_LANG', payload: lang }
}

export function switchColor(color) {
    return { type: 'APP_COLOR', payload: color }
}

// 异步action 返回一个函数
// redux-thunk处理异步函数 给return的函数传递一个参数dispatch,就可以在里面写异步代码了

export function login(data) {
    return function (dispatch) {
        // dispatch --- 派发一个同步的action
        fetchLogin(data).then(({ token }) => {
            if (token) {
                localStorage.setItem('token', token)
                // 派发同步action，把token存储到redux
                dispatch({ type: 'USER_LOGIN', payload: token })
            }
        })
    }
}

export function getInfo() {
    return function (dispatch) {
        fetchUserInfo().then(res => {
            if (res && res.roles) {
                dispatch({ type: 'USER_INFO', payload: res })
            }
        })
    }
}


export function resetUser() {
    return { type: 'USER_RESET', payload: null }
}